package cn.itcast.nems.product.service;


import cn.itcast.nems.product.dao.dataobject.ProductPriceRuleDO;
import cn.itcast.nems.product.dao.entity.ProductPriceRule;
import com.baomidou.mybatisplus.extension.service.IService;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 产品定价规则 服务类
 * </p>
 *
 * @author liyong
 * @since 2023-08-31
 */
public interface ProductPriceRuleService extends IService<ProductPriceRule> {

    /**
     * 更新或新增产品价格规则
     *
     * @param productPriceRules
     */
    void updateProductPriceRule(List<ProductPriceRule> productPriceRules);

    /**
     * 功能描述：查询产品的当前定价
     *
     * @param productId TODO
     * @return 当前定价
     * @author 刘曙
     * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
     * @since 2023年9月20日
     */
    ProductPriceRule getCurrentPriceRuleByProduct(Long productId);

    /**
     * 获取一批价格规则信息
     *
     * @param productIds 产品ID
     * @return key: 产品ID value: 价格规则
     */
    Map<Long, ProductPriceRule> findPriceRuleByProducts(Set<Long> productIds);

    /**
     * 根据商品编号和日期查询价格
     *
     * @param bizNo       商品编号，如: C-1234
     * @param useDateTime 购买商品的时间
     * @return 商品价格信息
     */
    ProductPriceRuleDO findPriceRuleByBizNo(String bizNo, LocalDateTime useDateTime);
}
